<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    // ppt之中的三个概念
    // 1. 执行环境;
    // 2. 变量对象;
    // 3. 活动对象;

    // function home(){
    //       // 保证a不被删除, 那怎么办 ? 
    //       var a = 10;
    //       // 1. 返回一个函数;
    //       return function(){
    //             // 2. 引用这个a;
    //             console.log(a);
    //       }
    // }
    // home();

    // 1. 执行环境;
    // 2. 变量对象;
    // 3. 活动对象;

    // function home(){
    //       // 保证a不被删除, 那怎么办 ? 
    //       var a = 10;
    //       // 1. 返回一个函数;
    //       return function(){
    //             // 2. 引用这个a;
    //             console.log(a);
    //       }
    // }
    // home();
    // 在函数内部返回一个匿名函数，在这个匿名函数之中引用这个变量。 
    // - 在闭包的情况下会产生一个特殊的变量;
    // - 这个变量是区别于全局变量和局部变量的;
    //    - 全局变量 : 生命周期（永久） 可访问性( 在任意地方都可以被访问 )
    //    - 局部变量 : 生命周期 (函数执行结束立即删除)  可访问性 (仅在函数内部可以被访问)
    //    - 自由变量 : 生命周期 (永久)  可访问性 (仅在函数内部访问);

    // 自由变量的使用 :
    // 1. 可以在任意时间被访问的;
    // 2. 保证数据的隐私性 =>  只有你的函数可以使用;

    // 一个需求 : 
    // 1. 这是一个考试系统;
    // 2. 会把所有的数据发送给前端包括答案;
    // 3. 考试结束实时给予评分。（前端完成）;

    // - 你答案放在哪里 ? 
    // 需求难点 :
    // 1. 请求一次返回所有数据  : 1. 答案  2. 试题;
    // 2. 答案这个东西考虑到我们需要在后面使用 , 我们是不是应该把这样的数据放在全局中那 ? 

    // 1 需要持久的保存数据;
    // 2 这个数据只有在我们的程序之中可以访问;
    //伪代码：
    function load(){
        return $.ajax({})
    }
    load().then(function(data){
        var ans =data.ans
        var que =data.que
        return (que);
        return function(){
            //使用ans
            console.log(ans);
        }
    })
</script>